package edu.yngsxy.wkstudy.core.sys.model.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import edu.yngsxy.wkstudy.core.model.entity.WkBaseEntity;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDateTime;
import jakarta.validation.constraints.*;
import io.swagger.v3.oas.annotations.media.Schema;
/**
 * <p>
 * AI分析表
 * </p>
 *
 * @author group 2
 * @since 2025-09-09
 */
@Getter
@Setter
@ToString
@Accessors(chain = true)
@TableName("aianalysis")
@Schema(description = "AI分析表")
public class Aianalysis extends WkBaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * AI分析ID
     */
    @TableField(value = "analysis_id")
    @Schema(title = "AI分析ID", description = "AI分析ID", requiredMode =Schema.RequiredMode.REQUIRED)
    @NotNull(message = "AI分析ID不能为空")
    private Integer analysisId;

    /**
     * 用户ID（外键，关联User）
     */
    @TableField("user_id")
    @Schema(title = "用户ID（外键，关联User）", description = "用户ID（外键，关联User）", requiredMode =Schema.RequiredMode.NOT_REQUIRED)
    private Integer userId;

    /**
     * 学习情况分析内容
     */
    @TableField("analysis_content")
    @Schema(title = "学习情况分析内容", description = "学习情况分析内容", requiredMode =Schema.RequiredMode.NOT_REQUIRED)
    @Size(max = 65535, message = "学习情况分析内容长度不能超过65,535个字符")
    private String analysisContent;

    /**
     * AI建议
     */
    @TableField("suggestion")
    @Schema(title = "AI建议", description = "AI建议", requiredMode =Schema.RequiredMode.NOT_REQUIRED)
    @Size(max = 65535, message = "AI建议长度不能超过65,535个字符")
    private String suggestion;

    /**
     * 分析时间
     */
    @TableField("analysis_time")
    @Schema(title = "分析时间", description = "分析时间", requiredMode =Schema.RequiredMode.REQUIRED)
    @NotNull(message = "分析时间不能为空")
    private LocalDateTime analysisTime;
}
